package leecode.字符串;

/**
 * @author wangxi created on 2021/5/30 16:46
 * @version v1.0
 * 来自于nowcoder --  字符串变形
 *
 * 对于一个给定的字符串，我们需要在线性(也就是O(n))的时间里对它做一些变形。首先这个字符串中包含着一些空格，
 * 就像"Hello World"一样，然后我们要做的是把着个字符串中由空格隔开的单词反序，
 * 同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。
 *
 * 注意：有几个case是这样：
 * 输入：" I a"
 * 输出："A i "
 *
 * 输入："now        coder "
 * 输出：" CODER        NOW"
 *
 * 这个题目的意思是不让删掉任何空格，就是单纯的把单词倒过来
 */

public class ReverseString {

    public String trans(String s, int n) {
        // write code here
        if (s == null || s.length() <= 0) {
            return "";
        }
        // 采用头插法
        String res = "";
        String temp = "";
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c >= 'A' && c <= 'Z') {
                // 单词拼接是正常的顺序
                temp = temp + Character.toLowerCase(c);
            } else if (c >= 'a' && c <= 'z') {
                temp = temp + Character.toUpperCase(c);
            }
            // 说明是空格
            else {
                temp = c + temp;
                res = temp + res;
                temp = "";
            }
        }
        res = temp + res;
        return res;
    }
}
